/**
 * Created by madali on 2017/11/8.
 */
package com.mada.factory;

//简单工厂模式    Simple Factory Pattern
//简单工厂模式是由一个工厂对象根据收到的消息决定要创建哪一个类的对象实例。
//简单工厂模式很容易违反高内聚低耦合的原则，因此一般只在很简单的情况下使用。


//工厂方法模式    Factory Method Pattern
//定义一个创建对象的工厂接口，让子类决定实例化哪一个类，将实际创建工作推迟到子类当中。
//工厂方法模式克服了简单工厂所违背的开闭原则的缺点，又保持了封装对象创建过程的优点。
//扩展性高，想要增加一个产品，只要扩展一个工厂类就可以。


//抽象工厂模式    Abstract Factory Pattern
//抽象工厂是围绕一个超级工厂创建其他工厂，该超级工厂又称为其他工厂的工厂。
// 提供一个创建一系列相关或相互依赖对象的接口，而无需指定他们具体的类。
//使用场景：系统的产品多于一个产品族，而系统只消费某一族的产品。
// 优点：当一个产品族中的多个对象被设计成一起工作时，它能保证客户端始终只使用同一个产品族中的对象。